<?xml version="1.0" encoding="UTF-8"?>
<doc>
<title>while 语句</title>

<para>
<ptitle>while 语句</ptitle>
　<kw>while</kw> 语句是在指定的条件为真的条件下，重复执行特定语句或代码段的语句。 while 语句可以用来编写循环。<r/>
　语法如下文所示。<r/>
<bq>
while(expression)<r/>
	语句或代码段<r/>
</bq>
<r/>
　「语句或代码段」将在条件表达式 expression 的求值结果为真的条件下被重复执行。<r/>
<r/>
　其实际操作是：<r/>
(1) 首先，对 expression 进行求值，如果为假，则语句或代码段不会被执行，while 语句结束（ 忽略 (2) 和 (3) ）<r/>
(2) 执行指定的语句或者代码段またはブロックを実行する<r/>
(3) 返回到 (1)<r/>
<r/>
　也就是说，如果最初进入 while 语句时对 expression 求值的结果就是假，则语句或代码段一次都不会被执行。此外， expression 并非在整个过程中一直被反复求值，而是在指定的语句或代码段被执行一次之后才会被重新求值并判断真假。<r/>
　此外，在 (3) 的情况下，如果给定的是代码段，则将从代码段中离开 ( 也就是说本地变量将被删除 )。<r/>
<example>
	while(func()) ;<r/>
	/* 在 func() 为真的情况下，什么也不做不断执行 func() 。 */<r/>
<r/>
	while(func()) i++;<r/>
	/* 在 func() 为真的情况下，不断执行 i++ 的操作 */<r/>
<r/>
	while(i &lt; 5) // 在 i 小于 5 的情况下<r/>
	{<r/>
		func(i);<r/>
		i++;<r/>
	}<r/>
</example>
</para>

<para>
<ptitle>break</ptitle>
　break 语句可以在 while 过程中结束整个 while 循环。<r/>
<example>
	while(true) // 只要没有执行 break 则将成为无限循环<r/>
	{<r/>
		if(func()) break; // 如果 func() 为真则结束while<r/>
		func2(); // ↑如果上文的 break 没有被执行，则会执行到这里<r/>
	}<r/>
	// 如果 break 被执行，则将到达这里。<r/>
</example>
</para>

<para>
<ptitle>continue</ptitle>
　continue 语句可以在执行给定的语句或代码段的过程中，从对条件表达式的求值及真伪判断开始重新做起。<r/>
　当 continue 被执行时，while 循环将直接移行到步骤 (3) 。<r/>
<example>
	var i = 0;<r/>
	while(i &lt; 5)<r/>
	{<r/>
		if(func1()) continue;<r/>
		// func1() 为真则重新判断 i &lt; 5 的条件表达式结果的真假，
		// 如果表达式值为真则重新从代码段开头开始执行。
		func2();<r/>
		i++;<r/>
	}<r/>
</example>
</para>

<para>
<ptitle>do～while</ptitle>
　do～while 语句和 while 语句基本相同，但是第一次执行的时候不进行条件检查。<r/>
　语法如下文所示。<r/>
<bq>
do<r/>
	语句或代码段<r/>
while(expression);<r/>
</bq>
<r/>
　由于最初不进行条件检查，即使执行到 do 的时候条件表达式的值为假，给定的“语句或代码段”也会被执行。<r/>
　一旦「语句或代码段」完成初次的执行，条件表达式就将被求值并判断真假。如果结果为假，则直接跳出循环，如果为真则重新执行代码段，并重复执行—判断的过程。<r/>
</para>
</doc>
